A well-known problem that exists for transmitting compressed correlated data, such as video, over a noisy channel is drift or error propagation. Using video as an example, in the traditional coding paradigm, the first frame of video is encoded independently and successive video frames are encoded by taking the difference between the current and the immediately preceding frames. This source coding reduces the number of bits required to transmit the video but the loss or corruption of a single frame can cause errors to be propagated to many successive frames. Channel coding is frequently used to reduce the magnitude of source coding errors by introducing redundancy into the transmitted data.
A video frame is defined to be an m×n array of values where m and n are dimensions of the video frame and each value is denoted as a coefficient. A macroblock is defined to be a subset of the video frame and can consist of any number of coefficients, from one value to the whole set of m×n values defined to be the video frame. Furthermore the subset of coefficients that constitute the macroblock may be operated on by a mathematical transformation to result in a new set of coefficients, as long as the mathematical transformation is invertible so that the original set of coefficients may be recovered. In this invention, the term macroblock will be used to refer to either the original or transformed coefficients. Referring to FIG. 1, the macroblock, can be visualized as a point in an n-dimensional coefficient space, in this case a three-dimensional space. The difference 111, often referred to as a “residual” or “residual error,” between the coefficients of a reference macroblock 107 and a closely correlated predictor macroblock 109 is encoded and sent with the predictor macroblock from an encoder 101 to a decoder 105. If the predictor macroblock 109 is lost or corrupted in a communication channel 103, and the encoded residual error 111 is not lost then the decoder 105 can first perform error concealment by attempting to determine an estimate of the lost predictor macroblock 113 and then add the residual error 111 to the estimated predictor macroblock to obtain an estimate of the reference macroblock 115. Because the estimated predictor 113 is unlikely to be identical to the original predictor 109, there will be a difference 117 between the reference macroblock 107 and the reconstructed reference macroblock 115. This difference, or drift error, will then be propagated to successive frames.